package matchs

import (
	"github.com/flipped-aurora/gin-vue-admin/server/global"
)

// MatchLog 全局匹配日志表模型（记录匹配流程关键事件）
type MatchLog struct {
	global.GVA_MODEL
	TaskType int8   `gorm:"column:task_type;type:tinyint;not null;comment:'关联任务类型：1-找人 2-问问'" json:"taskType"`
	TaskID   uint64 `gorm:"column:task_id;type:bigint unsigned;not null;comment:'关联任务ID'" json:"taskId"`
	UserID   uint64 `gorm:"column:user_id;type:bigint unsigned;not null;comment:'触发事件的用户ID'" json:"userId"`
	Action   string `gorm:"column:action;type:varchar(64);not null;comment:'事件类型（预定义）'" json:"action"`
	Payload  string `gorm:"column:payload;type:json;not null;comment:'事件附加数据（JSON）'" json:"payload"` // GORM中JSON类型用string存储
	IP       string `gorm:"column:ip;type:varchar(64);default:'';comment:'触发事件的IP地址'" json:"ip"`
}

// TableName 自定义表名（适配框架蛇形命名规范）
func (m *MatchLog) TableName() string {
	return "match_log"
}

// 事件类型常量（标准化事件名称，避免字符串混乱）
const (
	MatchLogActionTaskCreated            = "task_created"            // 任务创建（找人/问问）
	MatchLogActionCandidateRecommended   = "candidate_recommended"   // 候选用户推荐（仅找人）
	MatchLogActionCandidateSkipped       = "candidate_skipped"       // 用户跳过候选（仅找人）
	MatchLogActionCommunicationInitiated = "communication_initiated" // 发起沟通（找人/问问）
	MatchLogActionAskReplied             = "ask_replied"             // 回复问问（仅问问）
	MatchLogActionAskReplyAccepted       = "ask_reply_accepted"      // 采纳问问回复（仅问问）
	MatchLogActionRated                  = "rated"                   // 提交评分（找人/问问）
	MatchLogActionTaskExpired            = "task_expired"            // 任务超时（仅问问）
	MatchLogActionCancelled              = "task_cancelled"          // 任务取消（问问）
)
